package com.meituan.sdk.model.ddzhkh.finance.queryPayplanInfo;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;
import javax.validation.constraints.NotEmpty;

/**
* 查询账期信息
* This file was automatically generated.
*/
@ApiMeta(
    path = "/ddzhkh/finance/query/payplan",
    businessId = 59,
    apiVersion = "10011",
    apiName = "query_payplan_info",
    needAuth = true
)
public class QueryPayplanInfoRequest implements MeituanRequest<List<SettledPayPlanDTO>> {
    /**
    * <p data-diff-id="ct-diff-id-1ab31b15-b9d1-44c8-bcb6-838ec39d628b"><span style="color: ">是否查询总店</span></p>
    */
    @NotNull(message = "queryGeneralShop不能为空")
    @SerializedName("queryGeneralShop")
    private Boolean queryGeneralShop;
    /**
    * <p data-diff-id="ct-diff-id-0040f0f7-e682-411b-9af9-5659eb62cc46">业务类型 1表示团购</p>
    */
    @NotNull(message = "productCode不能为空")
    @SerializedName("productCode")
    private Integer productCode;
    /**
    * <p data-diff-id="ct-diff-id-f2ac897a-4670-4a89-9557-14446405bcef"><span style="color: ">美团门店Id列表</span></p><p data-diff-id="ct-diff-id-12e59628-7491-481b-8cc4-4b4e2b7dce28">该字段是混淆字段，实际值类型为混淆后的字符串类型。</p>
    */
    @NotEmpty(message = "opPoiIds不能为空")
    @SerializedName("opPoiIds")
    private List<String> opPoiIds;
    /**
    * <p data-diff-id="ct-diff-id-0b61f154-6ef4-46d5-b4b4-9314fd622477"><span style="color: ">页码从1开始，默认1</span></p>
    */
    @SerializedName("pageIndex")
    private Integer pageIndex;
    /**
    * <p data-diff-id="ct-diff-id-7f74eee7-e4f0-40f6-8603-b7dac44a0baa"><span style="color: ">单页大小，默认5000,最大5000,超过5000会被服务约束成5000</span></p>
    */
    @SerializedName("pageSize")
    private Integer pageSize;
    /**
    * <p data-diff-id="ct-diff-id-f2588be0-5a63-4ec3-9400-ce3de186797d"><span style="color: ">开始时间（毫秒维度时间戳）</span></p>
    */
    @NotNull(message = "createBeginTime不能为空")
    @SerializedName("createBeginTime")
    private Long createBeginTime;
    /**
    * <p data-diff-id="ct-diff-id-35fb9f20-2aec-4ba8-b05a-c545085c5bd4"><span style="color: ">结束时间（毫秒维度时间戳）</span></p>
    */
    @NotNull(message = "createEndTime不能为空")
    @SerializedName("createEndTime")
    private Long createEndTime;

    public Boolean getQueryGeneralShop() {
        return queryGeneralShop;
    }
    public void setQueryGeneralShop(Boolean queryGeneralShop) {
        this.queryGeneralShop = queryGeneralShop;
    }
    public Integer getProductCode() {
        return productCode;
    }
    public void setProductCode(Integer productCode) {
        this.productCode = productCode;
    }
    public List<String> getOpPoiIds() {
        return opPoiIds;
    }
    public void setOpPoiIds(List<String> opPoiIds) {
        this.opPoiIds = opPoiIds;
    }
    public Integer getPageIndex() {
        return pageIndex;
    }
    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Long getCreateBeginTime() {
        return createBeginTime;
    }
    public void setCreateBeginTime(Long createBeginTime) {
        this.createBeginTime = createBeginTime;
    }
    public Long getCreateEndTime() {
        return createEndTime;
    }
    public void setCreateEndTime(Long createEndTime) {
        this.createEndTime = createEndTime;
    }


    @Override
    public MeituanResponse<List<SettledPayPlanDTO>> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<List<SettledPayPlanDTO>>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "QueryPayplanInfoRequest{" + "queryGeneralShop=" + queryGeneralShop + "," + "productCode=" + productCode + "," + "opPoiIds=" + opPoiIds + "," + "pageIndex=" + pageIndex + "," + "pageSize=" + pageSize + "," + "createBeginTime=" + createBeginTime + "," + "createEndTime=" + createEndTime + "}";
    }
}
